/* 翻译后的代码中应当含有一个名为 IntArray 的 struct */
#include <iostream>
#include <cstring> // 使用memcpy
using namespace std;

class IntArray {
private:
    int* data;
    size_t size;

public:
    // 复杂的构造函数
    IntArray(size_t size) : size(size) {
        data = new int[size]; // 动态分配内存
        cout << "IntArray 构造函数被调用，分配了 " << size << " 个整数的空间。" << endl;
    }

    // 拷贝构造函数
    IntArray(const IntArray& other) : size(other.size) {
        data = new int[size];
        memcpy(data, other.data, size * sizeof(int));
        cout << "IntArray 拷贝构造函数被调用。" << endl;
    }

    // 赋值运算符重载
    IntArray& operator=(const IntArray& other) {
        if (this != &other) { // 防止自赋值
            delete[] data; // 释放原有资源
            size = other.size;
            data = new int[size]; // 分配新的内存
            memcpy(data, other.data, size * sizeof(int));
        }
        cout << "IntArray 赋值运算符被调用。" << endl;
        return *this;
    }

    // 析构函数
    ~IntArray() {
        delete[] data; // 释放动态分配的内存
        cout << "IntArray 析构函数被调用，释放了内存。" << endl;
    }

    // 设置数组指定位置的值
    void set(size_t index, int value) {
        if (index < size) {
            data[index] = value;
        }
    }

    // 获取数组指定位置的值
    int get(size_t index) const {
        if (index < size) {
            return data[index];
        }
        return 0; // 越界返回0
    }
};
